home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / nss / hasht.h < prev    next >
C/C++ Source or Header  |  2006-04-20  |  4KB  |  103 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is the Netscape security libraries.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Netscape Communications Corporation.
  18.  * Portions created by the Initial Developer are Copyright (C) 1994-2000
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *
  23.  * Alternatively, the contents of this file may be used under the terms of
  24.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  25.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  26.  * in which case the provisions of the GPL or the LGPL are applicable instead
  27.  * of those above. If you wish to allow use of your version of this file only
  28.  * under the terms of either the GPL or the LGPL, and not to allow others to
  29.  * use your version of this file under the terms of the MPL, indicate your
  30.  * decision by deleting the provisions above and replace them with the notice
  31.  * and other provisions required by the GPL or the LGPL. If you do not delete
  32.  * the provisions above, a recipient may use your version of this file under
  33.  * the terms of any one of the MPL, the GPL or the LGPL.
  34.  *
  35.  * ***** END LICENSE BLOCK ***** */
  36. /* $Id: hasht.h,v 1.7 2005/11/07 18:44:20 wtchang%redhat.com Exp $ */
  37.  
  38. #ifndef _HASHT_H_
  39. #define _HASHT_H_
  40.  
  41. /* Opaque objects */
  42. typedef struct SECHashObjectStr SECHashObject;
  43. typedef struct HASHContextStr HASHContext;
  44.  
  45. /*
  46.  * The hash functions the security library supports
  47.  * NOTE the order must match the definition of SECHashObjects[]!
  48.  */
  49. typedef enum {
  50.     HASH_AlgNULL   = 0,
  51.     HASH_AlgMD2    = 1,
  52.     HASH_AlgMD5    = 2,
  53.     HASH_AlgSHA1   = 3,
  54.     HASH_AlgSHA256 = 4,
  55.     HASH_AlgSHA384 = 5,
  56.     HASH_AlgSHA512 = 6,
  57.     HASH_AlgTOTAL
  58. } HASH_HashType;
  59.  
  60. /*
  61.  * Number of bytes each hash algorithm produces
  62.  */
  63. #define MD2_LENGTH    16
  64. #define MD5_LENGTH    16
  65. #define SHA1_LENGTH    20
  66. #define SHA256_LENGTH     32
  67. #define SHA384_LENGTH     48
  68. #define SHA512_LENGTH     64
  69. #define HASH_LENGTH_MAX SHA512_LENGTH
  70.  
  71. /*
  72.  * Structure to hold hash computation info and routines
  73.  */
  74. struct SECHashObjectStr {
  75.     unsigned int length;  /* hash output length (in bytes) */
  76.     void * (*create)(void);
  77.     void * (*clone)(void *);
  78.     void (*destroy)(void *, PRBool);
  79.     void (*begin)(void *);
  80.     void (*update)(void *, const unsigned char *, unsigned int);
  81.     void (*end)(void *, unsigned char *, unsigned int *, unsigned int);
  82.     unsigned int blocklength;  /* hash input block size (in bytes) */
  83.     HASH_HashType type;
  84. };
  85.  
  86. struct HASHContextStr {
  87.     const struct SECHashObjectStr *hashobj;
  88.     void *hash_context;
  89. };
  90.  
  91. /* This symbol is NOT exported from the NSS DLL.  Code that needs a 
  92.  * pointer to one of the SECHashObjects should call HASH_GetHashObject()
  93.  * instead. See "sechash.h".
  94.  */
  95. extern const SECHashObject SECHashObjects[];
  96.  
  97. /* Only those functions below the PKCS #11 line should use SECRawHashObjects.
  98.  * This symbol is not exported from the NSS DLL.
  99.  */
  100. extern const SECHashObject SECRawHashObjects[];
  101.  
  102. #endif /* _HASHT_H_ */
  103.